package com.pan.config;

import com.pan.config.common.SeckillRabbitmqCommon;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class RabbitConfig {

    @Bean
    public Queue rabbitmqQueue(){
        /**
         * 1、name:    队列名称
         * 2、durable: 是否持久化
         * 3、exclusive: 是否独享、排外的。如果设置为true，定义为排他队列。则只有创建者可以使用此队列。也就是private私有的。
         * 4、autoDelete: 是否自动删除。也就是临时队列。当最后一个消费者断开连接后，会自动删除。
         * */
        return new Queue(SeckillRabbitmqCommon.RABBITMQ_SECKILL_COUPON_TOPIC,true,false,false);

    }
    @Bean
    public DirectExchange rabbitmqDemoDirectExchange(){
        return  new DirectExchange(SeckillRabbitmqCommon.RABBITMQ_SECKILL_COUPON_DIRECT_EXCHANGE,true,false);
    }


    @Bean
    public Binding bindDirect(){
        return BindingBuilder//绑定交换机和队列
                //绑定队列
                .bind(rabbitmqQueue())
                //到交换机
                .to(rabbitmqDemoDirectExchange())
                //并设置匹配键
                .with(SeckillRabbitmqCommon.RABBITMQ_SECKILL_COUPON_DIRECT_ROUTING);
    }
}
